﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Collections.Specialized;
using System.Collections;
using InspectionVehicule.Pages;
using InspectionPageFlow;

namespace InspectionVehicule.Controleur
{
    
    public class InspectionControleur
    {
        // TODO Le dictionnaire pourrait être remplacer par quelque chosede plus adapté
        private static Dictionary<string, string> _listePage;
        private static Dictionary<string, Object> _donnees = 
            new Dictionary<string, object>();

        static InspectionControleur()
        {
            _listePage = new Dictionary<string, string>();
            _listePage.Add("Vehicule", "Vehicule.aspx");
            _listePage.Add("DefectuositeMineure", "DefectuositeMineure.aspx");
            _listePage.Add("DefectuositeMajeure", "DefectuositeMajeure.aspx");
            _listePage.Add("Terminer", "Terminer.aspx");
        }

        //public static void RouterPage(PageBase page, NavigationAction action)
        //{
        //    SaveDonnees(page);
        //    int indexPage = GetIndexPage(page);

        //    switch (action)
        //    {
        //        case ActionNavigation.Next:
        //            indexPage++;
        //            break;
        //        case ActionNavigation.Previous:
        //            indexPage--;
        //            break;
        //    }

        //    if (indexPage == _listePage.Count)
        //        SaveDonneesToDatabase();

        //    string nomProchainePage = _listePage.Keys.ToArray()[indexPage];
        //    string urlProchainePage = _listePage[nomProchainePage];

        //    TransfererDonnees(nomProchainePage);
        //    HttpContext.Current.Response.Redirect(urlProchainePage);
        //}

        private static void SaveDonneesToDatabase()
        {
            
        }

        private static int GetIndexPage(PageBase page)
        {
            if (page == null) return -1;

            return _listePage.Keys.ToList().IndexOf(page.Name);
        }

        private static void SaveDonnees(PageBase page)
        {
            if (page != null)
            {
                if (!_donnees.ContainsKey(page.Name))
                {
                    _donnees.Add(page.Name, page.State);
                }
                else
                {
                    _donnees[page.Name] = page.State;
                }
            }
        }

        private static void TransfererDonnees(string nomPage)
        {
            if (_donnees.ContainsKey(nomPage))
            {
                HttpContext.Current.Session["PageState"] = _donnees[nomPage];
            }
            else 
            {
                HttpContext.Current.Session["PageState"] = null;
            }           
        }
    }
}